import com.ibm.icu.text.CharsetDetector;
import com.ibm.icu.text.CharsetMatch;
import java.io.*;

public class Icu4jEncodingDetector {

    public static void main(String[] args) {
//        String filePath = "D:\\develop\\Code_Java\\DcsPointRefactor\\src\\main\\resources\\CU22.txt"; // 替换为你的文件路径
        String filePath = ""; // 替换为你的文件路径

        try {
            // 1. 检测文件编码
            String encoding = detectFileEncoding(filePath);
            System.out.println("检测到的编码: " + (encoding != null ? encoding : "未知"));

            // 2. 使用检测到的编码读取文件
            if (encoding != null) {
                readFileWithEncoding(filePath, encoding);
            } else {
                // 尝试使用默认编码读取
                readFileWithEncoding(filePath, "UTF-8");
            }
        } catch (IOException e) {
            System.err.println("文件处理错误: " + e.getMessage());
        }
    }

    // 使用ICU4J检测文件编码
    private static String detectFileEncoding(String filePath) throws IOException {
        CharsetDetector detector = new CharsetDetector();

        // 通过文件输入流设置文本
        try (InputStream fis = new BufferedInputStream(new FileInputStream(filePath))) {
            // 设置要检测的字节流
            detector.setText(fis);

            // 进行检测
            CharsetMatch match = detector.detect();
            if (match != null) {
                return match.getName(); // 返回检测到的编码名称，例如 "UTF-8"
            }
        }
        return null; // 没有检测到编码
    }

    // 使用指定编码读取文件
    private static void readFileWithEncoding(String filePath, String encoding) throws IOException {
        try (BufferedReader reader = new BufferedReader(
                new InputStreamReader(new FileInputStream(filePath), encoding))) {

            System.out.println("\n文件内容 (" + encoding + "):");
            System.out.println("-----------------------------------");

            String line;
            while ((line = reader.readLine()) != null) {
                System.out.println(line);
            }

            System.out.println("-----------------------------------");
        }
    }
}